package com.wn.sddfp.system;

import ch.qos.logback.classic.pattern.MessageConverter;
//import com.netflix.loadbalancer.IRule;
//import com.netflix.loadbalancer.RandomRule;
import feign.Logger;
import org.mybatis.spring.annotation.MapperScan;
//import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
//import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

/**
 * @author yellow Docter
 * @date 2024-07-29
 * @desc 蜗牛创想：www.woniuxy.com
 *
 *    注解:
 *    1、  @EnableFeignClients
 *       内部操作：@Import(FeignClientsRegistrar.class)
 *       @Import 把一个Java类 添加到IOC容器中
 *       FeignClientsRegistrar 这个类中
 *         扫描@FeignClient 标记的类 (把这个进行代理 添加到IOC容器中)
 *   2、接口代理类的生成
 *        把 TradeLogApi  生成代理对象 h.xxx()
 *        里面通过封装 HttpURLConnection 进行处理网络请求
 *        封装数据    RequestTemplate     发送求情况
 *        拿到结果    RespTemplate        拿到结果
 *        解析        Result rs =proxyTradeLogApi.xxx()
 *        拿到 结果 rs
 *
 */
@EnableCircuitBreaker   //开启熔断器
@EnableFeignClients("com.wn.bank.access.api")  //启动类上面 添加注解
@MapperScan("com.wn.sddfp.system.mapper")
@SpringBootApplication
@ComponentScan(value = {
        "com.wn.sddfp.system",      //扫描 system
        "com.wn.sddfp.common",      //扫描 common   把全局异常丢到ioc容器中
        "com.wn.bank.access.api.fallback"       //扫描 api   FallBack
})
public class SystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(SystemApplication.class,args);
    }

    /**
     *  Openfeign 调用日志
     * @return
     */
    @Bean
    public Logger.Level loggerLevel(){
        return Logger.Level.FULL;
    }
//
//    @Bean
//    public MessageConverter messageConverter(){
//        return new Jackson2JsonMessageConverter();
//    }

    /**
     * 修改 负载均衡算法
     * @return
     */
//    @Bean
//    public IRule rules(){
//        /**
//         *   RandomRule  随机算法
//         *   NacosRule   nacos中的规则
//         *
//         */
//        return new RandomRule();
//    }
}
